package com.jsy.common.util.license;

import java.util.Map;

/**
 * 在实际应用中，公钥可分发给需要加密数据发送给你的各方，私钥则需妥善保管，
 * 仅在解密和签名时使用。同时，还可根据需求对代码进行优化和扩展，如更好的异常处理、密钥存储管理等。
 */
public class Main {
    public static void main(String[] args) {
        try {
            // 生成密钥对
            Map<String, String> keyPairMap = AsymmetricEncryptionUtil.generateKeyPair();
            String publicKey = keyPairMap.get("publicKey");
            String privateKey = keyPairMap.get("privateKey");

            String originalData = "Hello, RSA Encryption!";
            // 公钥加密
            String encryptedData = AsymmetricEncryptionUtil.encryptByPublicKey(originalData, publicKey);
            // 私钥解密
            String decryptedData = AsymmetricEncryptionUtil.decryptByPrivateKey(encryptedData, privateKey);
            System.out.println("原始数据: " + originalData);
            System.out.println("加密后数据: " + encryptedData);
            System.out.println("解密后数据: " + decryptedData);

            // 私钥签名
            String sign = AsymmetricEncryptionUtil.sign(originalData, privateKey);
            // 公钥验证签名
            boolean isValid = AsymmetricEncryptionUtil.verify(originalData, sign, publicKey);
            System.out.println("签名验证结果: " + isValid);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}